Menu Close

如何制作WebP格式的文件

1. 什么是WebP

WebP(发音: weppy )是谷歌2010年发布的一种新的图片格式,可为 Web 上的图像提供卓越的无损和有损压缩。 使用 WebP,网站管理员和 Web 开发人员可以创建更小、更丰富的图像,从而使 Web 更快。

  • 同样的分辨率,大小比 jpg、png 小 25% 以上;
  • Chrome、Firefox、Edge、Opera 等都支持此格式。

2. WebP如何使用

2.1. 下载

下载对应平台软件包,软件包中包含 png/jpg 与 webp 相互转换的工具以及开发所需的库和头文件。
下载链接地址为:https://storage.googleapis.com/downloads.webmproject.org/releases/webp/index.html

  • Windows版本:libwebp-1.2.3-windows-x64.zip
  • Linux版本:libwebp-1.2.3-linux-x86-64.tar.gz
  • Mac版本:libwebp-1.2.3-mac-x86-64.tar.gz

2.2. 安装

以Windows版本为例,下载完成后解压至某个路径下,然后将其中的bin目录路径添加至环境变量path下即可:
file

bin目录下的文件有:
file

2.3. 工具介绍

1) cwebp
用于将其他格式图片转换为 WebP,支持的格式有:PNG、JPEG、TIFF、WebP 或原始 Y'CbCr 样本。

cwebp [options] -q quality input.png -o output.webp
其中option可选:-loss(有损压缩,默认),-lossless(无损压缩)
-q:质量指数(压缩率),有损压缩有效,无损压缩忽略
input.png:待转换图片
-o:输入图片名称格式。

2) dwebp
将 WebP 转换为图像,支持的格式有:JPG、PNG、PAM、PPM 或 PGM 图像。

dwebp input.webp -o output.png -quiet
其中input.webp表示输入webp文件,output.png表示输出png文件,-quiet表示静默模式(不输出打印信息)

3)gif2webp
将 GIF 图像转换为 WebP。

gif2webp picture.gif -o picture.webp

4) img2webp
从输入图像序列创建动画 WebP 文件,支持的格式有:PNG、JPEG、TIFF 或 WebP。

img2webp -loop 2 in0.png -lossy in1.jpg -d 80 in2.tiff -o out.webp

具体用法参见:第三章节。

4) vwebp
解压缩 WebP 文件并使用 OpenGL 在窗口中显示它。

vwebp input.webp 或者 vwebp input.webp -info
其中input.webp表示输入webp文件,-info表示打印信息。

5) webpinfo
用于输出webp文件信息

webpinfo input.webp
其中input.webp表示输入webp文件。

2.4. png/jpg 与 Webp 相互转换

  • webp 转 png/jpg

    dwebp xxx.webp -o xxx.png
    dwebp xxx.webp -o xxx.jpg
  • 3、png/jpg 转 webp

    cwebp -q 100 xxx.png -o xxx.webp
    cwebp -q 100 xxx.jpg -o xxx.webp
  • 批量 webp 转 png

    find ./ -name "*.webp" -exec dwebp {} -o {}.png;

3. 将多张图片制作成WebP

file
原因:有图片尺寸不一致,是无法转换成功的,需要找设计重新给图,尺寸大小需要一模一样。

3.1. 下载imagemagic

下载地址:https://imagemagick.org/script/download.php#windows

file

3.2. 安装imagemagic

点击exe程序进行安装

3.3. 使用 magick mogrify 命令修改图片尺寸

D:\tools\ImageMagick-7.1.0-Q16-HDRI\magick.exe mogrify -resize 1910x930! *.png

注意1910x930中间是小写字母x,不是*号。!表示要将图像调整为特定尺寸而又不保持原始图像的宽高比。

具体用法参见官方网站:https://imagemagick.org/script/mogrify.php
使用ImageMagick调整图像大小:https://blog.csdn.net/cukw6666/article/details/107984135

3.4. 使用 img2webp 命令将图片合并成动图

img2webp -loop -0 -lossy  1.png  -d 1000 2.png  -d 1000 3.png  -d 1000 4.png  -d 1000 5.png  -d 1000 6.png  -d 1000 7.png  -d 1000 8.png  -d 1000 9.png  -d 1000 10.png  -d 1000 11.png  -d 1000 12.png  -d 1000 13.png  -d 1000 -o output.webp

4. 将视频文件制作成webP

主要使用 ffmpeg 工具将视频

4.1. ffmpeg工具下载与安装

下载地址:https://github.com/BtbN/FFmpeg-Builds/releases/tag/latest

  • Linux版本:ffmpeg-master-latest-linux64-gpl-shared.tar.xz
  • Windows版本:ffmpeg-n5.1-latest-win64-gpl-shared-5.1.zip

windows安装方法是:下载解压至本地文件,然后添加到环境变量
file

打开cmd窗口,输入ffmepg即可开启。
其他操作系统的安装方法见:https://blog.csdn.net/weixin_44704985/article/details/109532224

4.2. 使用 ffmpeg 将视频分割成图片

D:\tools\ffmpeg\bin\ffmpeg.exe -i 20220805_181425.mp4 -ss 00:00:00 -y -f image2 -vf fps=1.6 -s 1920*1080 -qscale:v 4 .\images\%d.jpg

参数含义:

参数 含义
-i 表示抽帧的视频
-ss 表示抽取视频的开始时间
-t 表示抽取的时间长度
fps 帧率,表示每秒钟从视频中抽取多少帧形成图片
-s 表示视频的长宽
-y 覆盖输出文件,即如果文件已经存在的话,不经提示就覆盖掉了
-f fmt 指定格式(音频或视频格式)

其他参数见:https://www.jianshu.com/p/049d03705a81

4.3. 最后再利用 img2webp 命令将图片合并成动图

img2webp -loop 0 -lossy  1.jpg  -d 300 2.jpg  -d 300 3.jpg  -d 300 4.jpg  -d 300 5.jpg  -d 300 6.jpg  -d 300 7.jpg  -d 300 8.jpg  -d 300 9.jpg  -d 300 10.jpg  -d 300 11.jpg  -d 300 12.jpg  -d 300 13.jpg  -o output.webp

参数含义:

参数 含义
-loop 代表循环,0就是一直循环,1是重复1遍
-d 表示每张图片展示的时间长度,单位:毫秒
-lossless, -lossy 使用无损或有损压缩模式压缩下一个图像。默认模式是无损的。
-o 输出到文件

4.4. Windows生成动图的Bat脚本

@echo off & setlocal EnableDelayedExpansion
set path=%~dp0
set file_name_str=

cd %path%
mkdir \images
D:\tools\ffmpeg\bin\ffmpeg.exe -i 20220805_181425.mp4 -ss 00:00:00 -y -f image2 -vf fps=4 -s 1920*1080 -qscale:v 4 .\images\%%d.jpg

rem Create an array with filenames in right order
cd %path%images
for %%f in (*.jpg) do (
   for /F "delims=-" %%n in ("%%f") do (
      set "number=00000%%n"
      set "file[!number:~-6!]=%%f"
   )
)

rem Process the filenames in right order
for /F "tokens=2 delims==" %%f in ('set file[') do (
  set  file_name_str=!file_name_str! %%f, -d 300
)

set "file_name_str=%file_name_str:,= %"

D:\tools\libwebp\bin\img2webp.exe -loop 0 -lossy %file_name_str% -o output.webp

pause

附录:WebP图片展示

file